package com.springcloud.controller;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * 服务消费者可以返回JSON或视图页面
 * 我们使用@RestController仅仅是方便测试
 */
@RestController
public class ConsumerController {

    @Resource
    private RestTemplate restTemplate;

    @RequestMapping("/test")
    public Object test(){
        String url="http://02-ERUEKA-CLIENT-PROVIDER/test";
        /**
         * 通过服务名访问远程服务其中02-ERUEKA-CLIENT-PROVIDER为注册中心中的服务名,不区分大小写
         * SpringCloud就会到注册中心中获取指定服务的清单列表实现服务的发现
         * 注意:
         *   RestTemplate只是普通的Rest调用客户端,因此它只能通过IP地址访问某个具体服务,如果通过
         *   注册中心发现服务那么注册中心就会返回清单列表导致RestTemplate不能正确访问服务
         *   这时必须要让RestTemplate集成Ribbon的负载均衡,具体配置参考自定义配置类RestTemplateConfig
         */
        ResponseEntity<String> responseEntity= restTemplate.getForEntity(url,String.class);
        System.out.println(responseEntity.getStatusCode());
        System.out.println(responseEntity.getStatusCodeValue());
        System.out.println(responseEntity.getHeaders());
        String body=responseEntity.getBody();
        return "服务消费者-----"+body;
    }
}
